﻿#define _CRT_SECURE_NO_WARNINGS
//作者：宋安康
#include<stdio.h>
//动态内存管理
//int main() 
//{
//	int n = 0;
//	printf("%d\n",n);
//	scanf("%d",&n);
//	printf("%d\n", n);
//	printf("hello world\n");
//	//文件放在硬盘上：数据文件，程序文件
//	//文件名：文件标识
//	//数据文件：二进制文件和文本文件
//	//数据在内存中以二进制的形式存储，不加以转换直接输出到外存文件 --- 二进制文件
//	
//	return 0;
//}

//int main() 
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "wb");
//	fwrite(&a, 4, 1, pf);//二进制的形式写到文件中
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//操作文件
//1，打开文件
//2，读写文件
//3，关闭文件
//输入数据 （流） --> 程序 --->  （流）输出数据
//流 -- 内存里的一块区域
//int main() 
//{
//	//stdin -- 标准输入流
//	//stdout -- 标准输出流
//	//stderr -- 标准错误流 --显示器
//
//	//文件的打开与关闭
//	//打开文件
//	//FILE* fopen(const char* filename, const char* mode); //文件名和打开方式
//	//关闭文件
//	//int fclose(FILE * stream);
//	
//
//	//打开失败，返回空指针
//	//.表示当前路径
//	//..表示上一级路径
//	//FILE* pf = fopen(".\\..\\data.txt","w");  //放在相对路径下
//	FILE* pf = fopen("data.txt", "w");  //放在相对路径下
//
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 0;
//	}
//	fclose(pf);
//	pf = NULL;
//	printf("hehe\n");
//	return 0;
//}

//程序：数据在内存上
//
//int main() 
//{
//	FILE* pf = fopen("data.txt","w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//fputc("a",pf);
//	//fputc("b",pf);
//	//fputc("c",pf);
//	//fputc("d",pf);
//	//fputc("e",pf);//双引号改单引号
//	//for (int i = 0; i <26; i++)
//	//{
//	//	fputc('a'+i,pf);
//	//	fputc('\t',pf);
//
//	//}
//
//	for (int i = 0; i < 26; i++)
//	{
//		fputc('a' + i, stdout);
//		fputc('\t', stdout);
//
//	}
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//读文件
//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int ch = fgetc(pf);
//	printf("%c\n",ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch); 
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//写一个代码，完成将data.txt的内容拷贝到data2.txt ---内容拷贝
//int main() 
//{
//	FILE* pf1 = fopen("data1.txt","r");
//	
//	if (pf1 == NULL)
//	{
//		perror("fopen--data1.txt");
//		return 1;
//	}
//	FILE* pf2 = fopen("data2.txt", "w");
//	if (pf2 == NULL)
//	{
//		fclose(pf1);
//		pf1 == NULL;
//		perror("fopen--data2.txt");
//		return 1;
//	}
//	//数据的读写和拷贝
//	int ch = 0;
//	while ((ch = fgetc(pf1)) != EOF)
//	{
//		fputc(ch,pf2);
//	}
//	
//	
//	fclose(pf1);
//	fclose(pf2);
//	pf1 == NULL;
//	pf2 == NULL;
//	return 0;
//}

int main() 
{
	//FILE* pf = fopen("data3.txt","w");
	//if (pf == NULL)
	//{
	//	perror("fopen error w");
	//	return 1;
	//}
	////写文件 -- 一次写一行  -- int fputs();
	//fputs("abcdef12444\n",pf);
	//fputs("abcdef\n",pf);
	//fputs("abcdef\n",pf);
	//fputs("abcdef",pf);
	
	//读一行 -- int fgets();
	FILE* pf1 = fopen("data3.txt", "r");
	if (pf1 == NULL)
	{
		perror("fopen error  r");
		return 1;
	}
	char arr[30] = "xxxxxxxxxxxxxxxxx";
	fgets(arr,10,stdin);
	fputs(arr,stdout);
	//fclose(pf);
	//pf = NULL;
	fclose(pf1);
	pf1 = NULL;
	return 0;
}
